package com.penghaisoft.microwms.material.web.insidewarehouse.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.penghaisoft.microwms.common.dto.ConRawCondDto;
import com.penghaisoft.microwms.common.dto.MesConRawReqDto;
import com.penghaisoft.microwms.common.dto.RawStorageDto;
import com.penghaisoft.microwms.common.mapper.BaseMapper;
import com.penghaisoft.microwms.common.page.Pager;
import com.penghaisoft.microwms.common.wms.model.RawStorageSn;

public interface RawStorageSnMapper extends BaseMapper<RawStorageSn> {

	List<RawStorageSn> queryRawStorageSnByCode(@Param("entity")RawStorageSn rawStorageSn);

	long queryRawStorageDtoCount(@Param("entity") RawStorageDto condition);
	
	long queryRawStorageDtoCountHZ(@Param("entity") RawStorageDto condition);

	List<RawStorageDto> queryStorageDtoList(@Param("page") Pager<RawStorageDto> pager, @Param("entity") RawStorageDto rawStorageDto);
	
	List<RawStorageDto> queryStorageDtoListHZ(@Param("page") Pager<RawStorageDto> pager, @Param("entity") RawStorageDto rawStorageDto);

	Integer updateOpenClose(@Param("entity") RawStorageSn rawStorageSn);
	
	/** 
	 * @Title queryListWhiteBlackIn
	 * @Description 黑白料入库明细查询
	 * @author luoteng
	 * @date 2018年6月4日:下午4:50:55
	 * @param page
	 * @param t
	 * @return List<RawStorageSn>
	 */
	public List<RawStorageSn> queryListWhiteBlackIn(@Param("page") Pager<RawStorageSn> page, @Param("entity") RawStorageSn t);
	
	/** 
	 * @Title queryCountWhiteBlackIn
	 * @Description 黑白料入库明细查询【个数】
	 * @author luoteng
	 * @date 2018年6月4日:下午4:51:13
	 * @param t
	 * @return Long
	 */
	public Long queryCountWhiteBlackIn(@Param("entity") RawStorageSn t);
	
	/** 
	 * @Title queryListWhiteBlackOut
	 * @Description 黑白料出库明细查询
	 * @author luoteng
	 * @date 2018年6月4日:下午4:50:55
	 * @param page
	 * @param t
	 * @return List<RawStorageSn>
	 */
	public List<RawStorageSn> queryListWhiteBlackOut(@Param("page") Pager<RawStorageSn> page, @Param("entity") RawStorageSn t);
	
	/** 
	 * @Title queryCountWhiteBlackOut
	 * @Description 黑白料出库明细查询【个数】
	 * @author luoteng
	 * @date 2018年6月4日:下午4:51:13
	 * @param t
	 * @return Long
	 */
	public Long queryCountWhiteBlackOut(@Param("entity") RawStorageSn t);
	
	/** 
	 * @Title queryByAnyAbs
	 * @Description 查询库存明细列表（数量取绝对值）
	 * @author luoteng
	 * @date 2018年6月4日:下午5:30:01
	 * @param rawStorageSn
	 * @return List<RawStorageSn>
	 */
	List<RawStorageSn> queryByAnyAbs(@Param("entity")RawStorageSn rawStorageSn);

	/**
	 * 根据id查询条码的合同号（只查合同号）
	 * @wzhg 1865
	 * @param rawStorageSn
	 * @return
	 */
	RawStorageSn findById(@Param("entity")RawStorageSn rawStorageSn);

	/**
	 * 根据id修改合同号(可以置为空可以修改为其他值)
	 * @wzhg 1865
	 * @param rawStorageSn
	 * @return
	 */
	int updateById(@Param("entity")RawStorageSn rawStorageSn);

	/**
	 * @wzhg 1865
	 * 根据条码号查询条码信息 用list.get(0) /方便查错
	 * @param rawStorageSn
	 * @return
	 */
	List<RawStorageSn> findByCode(@Param("entity")RawStorageSn rawStorageSn);
	
	List<RawStorageDto> queryAvailAmountList(@Param("entity") RawStorageDto rawStorageDto);
	
	/** 
	* @Title: updateBySelectIds 
	* @Description: 根据主键列表批量更新
	* @param @param t
	* @param @return  参数说明 
	* @return Integer    返回类型
	* @author luoteng 
	* @date 2018年8月14日 下午2:21:33 
	* @throws 
	*/
	public Integer updateBySelectIds(@Param("entity") RawStorageSn t);

	/** 
	* @Title: findConProRequired 
	* @Description: 原材料销售报表  
	* @param @param conRawCondDto
	* @param @return  参数说明 
	* @return List<MesConRawReqDto>    返回类型
	* @author jzh 
	* @throws 
	*/
	List<MesConRawReqDto> findConRawRequired(@Param("entity") ConRawCondDto conRawCondDto);

	long queryKulingOffCount(@Param("entity") RawStorageSn condition);

	List<RawStorageSn> queryKulingOffList(@Param("page") Pager<RawStorageSn> pager,@Param("entity") RawStorageSn condition);
	
	/** 
	* @Title: updateByBarcode 
	* @Description: 根据条码更新
	* @param @param t
	* @param @return  参数说明 
	* @return Integer    返回类型
	* @author luoteng 
	* @date 2018年10月9日 下午5:16:11 
	* @throws 
	*/
	public Integer updateByBarcode(@Param("entity") RawStorageSn t);
	
	public RawStorageSn querySumAmountIn(@Param("entity") RawStorageSn t);
	
	public RawStorageSn querySumAmountOut(@Param("entity") RawStorageSn t);
	
	public RawStorageSn querySumAmount(@Param("entity") RawStorageSn t);
	
	public RawStorageSn queryBySnId(@Param("entity") RawStorageSn t);
	
	public RawStorageDto querySumAmountDto(@Param("entity") RawStorageDto t);
	
	public RawStorageDto querySumAmountDtoHZ(@Param("entity") RawStorageDto t);
	
	/** 
	 * @Title listIntoWhModelType
	 * @Description 查询入库型号明细
	 * @author luoteng
	 * @date 2018年6月4日:下午5:30:01
	 * @param rawStorageSn
	 * @return List<RawStorageSn>
	 */
	List<RawStorageSn> listIntoWhModelType(@Param("page") Pager<RawStorageSn> pager, @Param("entity") RawStorageSn condition);
	
	public Long countIntoWhModelType(@Param("entity") RawStorageSn t);
	
	public Long countAuditing(@Param("entity") RawStorageSn t);
	
	List<RawStorageSn>  listAuditing(@Param("page") Pager<RawStorageSn> pager, @Param("entity") RawStorageSn condition);
	
	RawStorageSn findQuantitiyWbMaterial (@Param("entity") RawStorageSn condition);
	
	List<RawStorageSn> findQuantitiyMaterial(@Param("page") Pager<RawStorageSn> pager, @Param("entity") RawStorageSn condition);
	
	public Long countQuantitiyMaterial(@Param("entity") RawStorageSn t);
	
	List<RawStorageSn> findQuantitiyMaterialToSn(@Param("page") Pager<RawStorageSn> pager, @Param("entity") RawStorageSn condition);
	
	public Long countQuantitiyMaterialToSn(@Param("entity") RawStorageSn t);
	
	public Long queryStorageChangeCount(@Param("entity") RawStorageSn t);

	public List<RawStorageSn> queryStorageChangeList(@Param("page") Pager<RawStorageSn> page, @Param("entity") RawStorageSn t);
	
	public List<RawStorageSn> findQuantitiyMaterialInTime(@Param("entity") RawStorageSn t);
}
